package br.com.web.actions;

import java.io.File;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.model.SelectItem;

import br.com.web.dao.TipoArquivoDAOImpl;
import br.com.web.dominio.Arquivo;
import br.com.web.dominio.TipoArquivo;
import br.com.web.facade.ArquivoService;
import br.com.web.facade.TipoArquivoFacade;


public class UploadAction {
	private ArquivoService service;
	private TipoArquivoFacade tiposFacade;

	private Arquivo arquivo;
	private File file;

	private Map<String, TipoArquivo> tipos;	
	private String item;
	
	public UploadAction(){
		arquivo = new Arquivo();
	}		
	
	public String getItem() {
		return item;
	}

	public void setItem(String item) {
		this.item = item;
	}

	public String enviar(){
		if (arquivo.getNome() != null){			
			String[] v = item.split("-");
			arquivo.setTipo(new TipoArquivo(Integer.parseInt(v[0].trim()), v[1]));
			service.salvar(arquivo);
		}	
		return ("enviado");
	}

	public Map<String, TipoArquivo> getTipos(){

		if (tipos == null){
			List<TipoArquivo> lista = tiposFacade.getTipos();
			System.out.println("\n\nTIPOS: "+lista+"\n");

			tipos = new HashMap<String, TipoArquivo>(lista.size());

			int x= 0;
			for (TipoArquivo t: lista){
				//tipos.add(new SelectItem(t,t.getTipo()));
				tipos.put(t.toString(), t);
			}
		}
		return (tipos);
	}

	public void setTipos(Map<String, TipoArquivo> tipos){
		this.tipos = tipos;
	}

	public Arquivo getArquivo() {
		return arquivo;
	}

	public void setArquivo(Arquivo arquivo) {
		this.arquivo = arquivo;
	}

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
		arquivo.setNome(file.getName());
		arquivo.setPath(file.getAbsolutePath());
		arquivo.setDataUpload(new Timestamp(new Date().getTime()));		
	}

	public ArquivoService getService() {
		return service;
	}

	public void setService(ArquivoService service) {
		this.service = service;
	}

	public TipoArquivoFacade getTiposFacade() {
		return tiposFacade;
	}

	public void setTiposFacade(TipoArquivoFacade tiposFacade) {
		this.tiposFacade = tiposFacade;
	}
}
